package com.web.webtest.controller; // 确保包名正确

import com.web.webtest.entity.User;
import com.web.webtest.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.Optional;

@Controller // 声明这是一个 Spring MVC Controller
public class LoginController {

    private final UserService userService;

    // 使用构造函数注入 UserService
    @Autowired
    public LoginController(UserService userService) {
        this.userService = userService;
    }

    /**
     * 显示登录页面
     * @return 登录页面的视图名
     */
    @GetMapping("/login") // 处理对 "/login" 路径的 GET 请求
    public String showLoginPage() {
        return "login"; // 返回名为 "login" 的视图 (Thymeleaf模板文件名将是 login.html)
    }

    /**
     * 处理登录表单提交
     * @param username 从请求参数中获取用户名
     * @param password 从请求参数中获取密码
     * @param model 用于向视图传递数据
     * @return 成功则重定向到欢迎页面，失败则返回登录页面并带上错误信息
     */
    @PostMapping("/login") // 处理对 "/login" 路径的 POST 请求
    public String handleLogin(@RequestParam String username,
                              @RequestParam String password,
                              Model model) {

        Optional<User> userOptional = userService.findByUsername(username);

        if (userOptional.isPresent()) {
            User user = userOptional.get();
            // 【重要】这里的密码校验非常简单，实际应用中必须使用哈希和盐值进行安全比较！
            // 这是为了演示流程，后续您需要替换为安全的密码校验逻辑 (例如使用 Spring Security)。
            if (user.getPassword().equals(password)) {
                // 登录成功
                // model.addAttribute("username", username); // 可以传递用户名到成功页面
                return "redirect:/welcome"; // 重定向到欢迎页面 (我们稍后创建)
            } else {
                // 密码错误
                model.addAttribute("error", "用户名或密码错误");
                return "login"; // 返回登录页面，并显示错误信息
            }
        } else {
            // 用户名不存在
            model.addAttribute("error", "用户名或密码错误"); // 为安全起见，不明确指出是用户名还是密码错误
            return "login";
        }
    }

    /**
     * （临时）一个简单的欢迎页面
     */
    @GetMapping("/welcome")
    public String showWelcomePage(Model model) {
        // 如果需要，可以在这里从会话中获取已登录用户的信息并传递给视图
        // model.addAttribute("message", "登录成功！"); // 简单示例
        return "welcome"; // 返回名为 "welcome" 的视图 (Thymeleaf模板文件名将是 welcome.html)
    }
}